package com.pond.pond.domain;

import java.math.BigDecimal;

import com.pond.pond.validation.ValidPondSeat;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.pond.common.core.annotation.Excel;
import com.pond.common.core.web.domain.BaseEntity;

import javax.validation.constraints.NotNull;

/**
 * 钓位信息对象 pond_seat
 * 
 * @author ruoyi
 * @date 2025-06-09
 */
@Getter
@Setter
@ValidPondSeat
public class PondSeat extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 所属鱼塘ID */
    @Excel(name = "所属鱼塘ID")
    @NotNull(message = "所属鱼塘ID不能为空")
    private Long pondId;

    /** 所属鱼塘名称 */
    @Excel(name = "所属鱼塘名称")
    private String pondName;

    /** 所属部门ID（租户） */
    @Excel(name = "所属部门ID", readConverterExp = "租=户")
    @NotNull(message = "所属部门ID不能为空")
    private Long deptId;

    /** 所属部门名称（租户） */
    @Excel(name = "所属部门名称", readConverterExp = "租=户")
    private String deptName;


    /** 钓位编号，如 A1、B2 */
    @Excel(name = "钓位编号，如 A1、B2")
    private String code;

    /** 是否批量新增，如 true、false */
    @Excel(name = "钓位编号，如 A1、B2")
    private Boolean isBatch;

    /** 批量生成数量，如 A1、B2 */
    @Excel(name = "批量生成数量，如 1、10")
    private Integer batchCount;

    /** 钓位命名，如 双人台、A */
    @Excel(name = "钓位命名，如 双人台、A")
    private String codePrefix;

    /** 钓位状态（0=空闲，1=已预约，2=使用中，3=禁用） */
    @Excel(name = "钓位状态", readConverterExp = "0==空闲，1=已预约，2=使用中，3=禁用")
    private Integer status;

    /** 钓位价格段id */
    @Excel(name = "钓位价格", readConverterExp = "绑定的价格段id")
    private Long priceSegmentId;

    /** 是否可预约（0=否，1=是） */
    @Excel(name = "是否可预约", readConverterExp = "0==否，1=是")
    private Integer reservable;

    private BigDecimal price;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("pondId", getPondId())
            .append("pondId", getPondName())
            .append("pondId", getDeptName())
            .append("deptId", getDeptId())
            .append("code", getCode())
            .append("status", getStatus())
            .append("priceSegmentId", getPriceSegmentId())
            .append("reservable", getReservable())
            .append("remark", getRemark())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
